package com.tsd.jxc.report.service;

import com.tsd.core.vo.PageBean;
import com.tsd.jxc.report.vo.JxcBuySaleBillDetailVo;
import com.tsd.jxc.report.vo.JxcStockInOutBillInventoryVo;
import com.tsd.jxc.report.vo.JxcStockInOutBillReportVo;

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public interface JxcReportService {
    /**
     * 描述：采购汇总报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyOrderReportList(Map<String, Object> params) throws Exception;

    /**
     * 采购退货汇总报表
     *
     * @param params
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyReturnCollectReportList(Map<String, Object> params);

    /**
     * 描述：采购年度报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyYearReportListByPage(Map<String, Object> params, PageBean page) throws Exception;

    /**
     * 描述：采购退货年度报表
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyReturnYearReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：采购商品报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyGoodsReportListByPage(Map<String, Object> params, PageBean page) throws Exception;

    /**
     * 描述：采购退货商品报表
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyReturnGoodsReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：销售汇总报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleOrderCollectReportList(Map<String, Object> params) throws Exception;

    /**
     * 描述：销售退货汇总报表
     *
     * @param params
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleReturnCollectReportList(Map<String, Object> params);

    /**
     * 描述：销售年度报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleYearReportListByPage(Map<String, Object> params, PageBean page) throws Exception;

    /**
     * 描述：销售退货年度报表
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleReturnYearReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：销售商品报表
     *
     * @param params
     * @return
     * @throws Exception
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleGoodsReportListByPage(Map<String, Object> params, PageBean page) throws Exception;

    /**
     * 描述：销售退货商品报表
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleReturnGoodsReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：入库统计
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findStockInbillReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：出库统计
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findStockOutbillReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：盘盈盘亏
     *
     * @param params
     * @param page
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findStockInventoryReportListByPage(Map<String, Object> params, PageBean page);

    /**
     * 描述：采购金额 Echart 报表
     *
     * @param params
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findBuyAmountQtyVisualChartList(Map<String, Object> params);

    /**
     * 描述：销售金额 Echart 报表
     *
     * @param params
     * @return
     */
    LinkedList<LinkedHashMap<String, Object>> findSaleAmountQtyVisualChartList(Map<String, Object> params);

    List<JxcStockInOutBillReportVo> findJxcStockInOutBillReport(Map<String, Object> params, PageBean page) throws Exception;

    List<JxcStockInOutBillInventoryVo> findJxcStockInOutBillInventory(Map<String, Object> params, PageBean page) throws Exception;

    List<JxcBuySaleBillDetailVo> findBuySaleBillDetailReport(Map<String, Object> params, PageBean page);
}
